package leecode

import "sort"

func findMinArrowShots(points [][]int) int {
	//首先对二维数组进行排序
	sort.Slice(points, func(i, j int) bool {
		return points[i][0] < points[j][0]
	})
	result := 1
	for i := 0; i+1 < len(points); i++ {
		//如果当前右边界 小于 下一个气球范围的左边界 ,需要多一个箭
		if points[i][1] > points[i+1][0] {
			result++
		} else {
			points[i+1][1] = min(points[i][1], points[i+1][1]) //更新下一个重叠气球的最小右边界
		}
	}
	return result
}
